.TH std::variant_npos 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::variant_npos \- std::variant_npos

.SH Synopsis
   Defined in header <variant>
   inline constexpr std::size_t variant_npos = -1;  \fI(since C++17)\fP

   This is a special value equal to the largest value representable by the type
   std::size_t, used as the return value of index() when valueless_by_exception() is
   true


// Run this code

 #include <iostream>
 #include <stdexcept>
 #include <string>
 #include <variant>

 struct Demon
 {
     Demon(int) {}
     Demon(const Demon&) { throw std::domain_error("copy ctor"); }
     Demon& operator= (const Demon&) = default;
 };

 int main()
 {
     std::variant<int, Demon> var{42};
     std::cout
         << std::boolalpha
         << "index == npos: " << (var.index() == std::variant_npos) << '\\n';

     try { var = Demon{666}; } catch (const std::domain_error& ex)
     {
         std::cout
             << "Exception: " << ex.what() << '\\n'
             << "index == npos: " << (var.index() == std::variant_npos) << '\\n'
             << "valueless: " << var.valueless_by_exception() << '\\n';
     }
 }

.SH Possible output:

 index == npos: false
 Exception: copy ctor
 index == npos: true
 valueless: true

.SH See also

                          returns the zero-based index of the alternative held by the
   index                  variant
                          \fI(public member function)\fP
   valueless_by_exception checks if the variant is in the invalid state
                          \fI(public member function)\fP
